Multi-user Internet applications such as games are typically implemented using a client-server paradigm. If a particular client does not know the location of a required server it must discover that location before any interaction can occur (e.g. participate in a game session hosted by the server). A client will typically use a discovery protocol in order to discover servers in the network. A new client that is started somewhere in the network generally uses the discovery protocol to broadcast a discovery message. Servers in the network receive the discovery message and respond to it informing the client about their presence in the network and the services that they offer. A server's response to a discovery message has enough information so that the client can contact the server at a later point (e.g. an IP address and port number). In some cases, a directory server may be provided which acts as a focal point for service information, broadcasting discovery messages across the local network in order to collect service information from network servers (including respective IP addresses and port numbers), and responding to discovery requests from clients. An example service discovery protocol is specific to the well known game QUAKE™ is the “Quake Network Protocol”.
Discovery protocols relying upon broadcast discovery messages can, typically, only be used within local networks. These protocols do not scale to the public Internet or to large networks with different sites (e.g., a corporate or a university network) where the broadcasting of such signalling messages would result in an intolerable burden on the available bandwidth. This means that users are restricted to their local networks unless of course they have prior knowledge of the location of a remote server (e.g. due to the location being advertised on a web site or obtained from a “rendezvous” server). Even in this case however, problems can arise due to the presence within local networks of Network Address Translators (NATs) and firewalls.
Some discovery protocols do support discovery in remote networks. However, these require special support in network routers, i.e. the routers must understand the discovery protocol used by the application, e.g. game.